package com.ruoyi.system.pay.service;

import com.alipay.api.AlipayApiException;
import com.ruoyi.system.pay.domain.dto.OrderQueryDTO;
import com.ruoyi.system.pay.domain.po.PayOrder;
import com.ruoyi.system.pay.domain.dto.PayRequestDTO;
import com.ruoyi.system.pay.domain.vo.PayOrderVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 统一支付接口
 */
public interface IPayService {

    /**
     * 创建支付订单
     *
     * @param order 订单信息
     * @return 支付跳转 URL（支付宝支付 URL）
     */
    String createPayOrder(PayOrder order);

    /**
     * 处理支付回调（验证签名）
     *
     * @param request
     * @return 是否成功
     */
    boolean verifyPayCallback(HttpServletRequest request);

    /**
     * 查询订单支付状态
     *
     * @param orderNumber 订单号
     * @return 订单信息
     */
    PayOrder getOrderStatus(String orderNumber);

    /**
     * 更新订单状态
     *
     * @param orderNumber
     * @param tradeNo
     * @param paid
     */
    void updateOrderStatus(String orderNumber, String tradeNo, String paid);

    /**
     * 统一支付接口，默认支付宝支付
     *
     * @param payRequestDTO 支付请求数据
     * @return 支付跳转地址或表单
     */
    String unifiedPay(PayRequestDTO payRequestDTO);

    /**
     * 统一订单查询
     *
     * @param queryDTO 订单查询参数
     * @return 查询结果
     */
    PayOrderVO queryOrder(OrderQueryDTO queryDTO) throws AlipayApiException;
}

